package com.ktgj.service.mapper;

import java.util.List;
import java.util.Map;

import com.ktgj.service.domain.OrderViphall;
import com.ktgj.service.domain.Viphall;
import com.ktgj.service.domain.ViphallDO;
import com.ktgj.service.domain.vo.OrderViphallVo;
import com.ktgj.service.domain.vo.VipchannelOrederParameterVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 贵宾厅订单Mapper接口
 *
 * @author ruoyi
 * @date 2021-09-03
 */
@Repository
public interface OrderViphallMapper
{
    /**
     * 查询贵宾厅订单*
     * @param orderviphallId 贵宾厅订单ID
     * @return 贵宾厅订单*/
    public OrderViphall selectOrderViphallById(Long orderviphallId);

    /**
     * 查询贵宾厅订单列表
     *
     * @param orderViphall 贵宾厅订单* @return 贵宾厅订单集合
     */
    public List<OrderViphall> selectOrderViphallList(OrderViphall orderViphall);

    /**
     * 新增贵宾厅订单*
     * @param orderViphall 贵宾厅订单* @return 结果
     */
    public int insertOrderViphall(OrderViphall orderViphall);
    public int addOrderViphall(OrderViphall orderViphall);

    /**
     * 修改贵宾厅订单*
     * @param orderViphall 贵宾厅订单* @return 结果
     */
    public int updateOrderViphall(OrderViphall orderViphall);

    /**
     * 删除贵宾厅订单*
     * @param orderviphallId 贵宾厅订单ID
     * @return 结果
     */
    public int deleteOrderViphallById(Long orderviphallId);

    /**
     * 批量删除贵宾厅订单*
     * @param orderviphallIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteOrderViphallByIds(Long[] orderviphallIds);

    /**
     * 根据贵宾厅订单Id查询客户信息
     *
     * @param orderviphallId
     * @return
     */
    public List<OrderViphall> selectOrderViphallContactNameById(Long orderviphallId);

    public List<OrderViphall> selectOrderViphall();

    /**
     * 支付成功页面展示
     * @param orderviphallId
     * @return
     */
    public OrderViphall selectOrderViphallNumber(Long orderviphallId);

    /**
     * 首页-黄金会员-进行中/已使用
     * @param customerId
     * @return
     */
    public List<ViphallDO> selectOrderViphallByStatus(Long customerId);

    /**
     * 贵宾厅订单收银台
     * @param orderNumber
     * @return
     */
    public OrderViphall cashier(Long orderNumber);

    /**
     * 订单二维码
     * @param customerId
     * @param orderviphallId
     * @return
     */
    public List<OrderViphall> orderViphallQRCode(@Param("customerId") Long customerId,
                                                 @Param("orderviphallId") Long orderviphallId);

    /**
     * 贵宾厅订单详情
     * */
    public List<OrderViphall> selectOrderViphallByCustomerId(@Param("customerId") Long customerId,
                                                             @Param("orderviphallId") Long orderviphallId);

    /**
     * 删除订单
     * */
    public int updateOrderViphallByIsDeleted(Long orderviphallId);

    /**
     * 取消订单
     * */
    public int updateOrderViphallByPaymentStatus(@Param("orderviphallId") Long orderviphallId,
                                                 @Param("paymentStatus") String paymentStatus);

    /**
     * 查看当前订单的支付状态
     * */
    public OrderViphall selectOrderViphallBycustomerIdAndOrderViphallId(@Param("customerId") Long customerId,
                                                                        @Param("orderviphallId") Long orderviphallId);

    /**
     * 修改订单
     * */
    public int updateOrderViphallByContactPhone(OrderViphall orderviphall);

    /**
     * 立即支付（修改状态）
     * */
    public int updateOrderViphallByPaymentStatusAndOrderviphallId(Long orderviphallId);

    /**
     * 申请退款
     * */
    public int updateOrderViphallBy(Long orderviphallId);

    public List<OrderViphall> queryViphallTrip(Long orderviphallId);

    /**
     * 根据卡号查询贵宾厅订单列表
     * */
    public List<OrderViphall> VipRoomOrder(@Param("customerId") Long customerId, @Param("type") String type);

    public OrderViphall queryOrderViphall(@Param("customerId") Long customerId, @Param("orderNumber") Long orderNumber);

    /**
     * 定制行程-单程
     * @param customerId
     * @param status
     * @return
     */
    public OrderViphall queryItinerary(@Param("customerId") Long customerId, @Param("status") String status);

    public OrderViphall selectItinerary(Long orderviphallId);

    public OrderViphall queryByOrderNumber(Long orderNumber);

    /**
     * 修改贵宾厅订单*
     * @param orderViphall 贵宾厅订单* @return 结果
     */
    public int updateByOrderNumber(OrderViphall orderViphall);

    public int queryVipHallOrderNumber(@Param("customerId") Long customerId);

    /**
     * 贵宾厅订单列表
     * */
    public List<OrderViphall> selectOrderViphalls(VipchannelOrederParameterVo vipchannelOrederParameterVo);

    /**
     * 贵宾厅订单详细
     * */
    public OrderViphall selectVipHallDetails(Long orderviphallId);

    /**
     * 贵宾厅订单详细+orderNumber
     * */
    public OrderViphall selectVipHallDetailsByorderNumber(Long orderNumber);
    /**
     * 贵宾厅退单
     * */
    public int chargebackOrderViphall(Long orderviphallId);

    /**
     * 贵宾厅订单详细
     * */
    public OrderViphall vipHallDetails(String orderNum);

    /**
     * 员工所属部门贵宾厅列表
     * */
    public List<OrderViphall> deptVipHallOrderList(Long id);
}
